AWS Step Functions ステートマシンの作成・更新時にエラーが発生したときの対処方法
この記事はアノテーション株式会社 AWS Technical Support Advent Calendar 2022 | Advent Calendar 2022 - Qiita 18日目の記事です。
困っていた内容
Step Functions ステートマシンの作成・更新時にエラーが発生して失敗します。
どのように対応すればよいか教えてください。
どう対応すればいいの?
よくあるエラーには以下 2 つがあるため、それぞれの確認方法や対処方法を記載します。
- AWS SDK の統合や最適化された統合で、正しくない、またはサポートされていない API やパラメーターを指定している
- ステートマシンの IAM ロールの権限が不十分
AWS SDK の統合や最適化された統合で、正しくない、またはサポートされていない API やパラメーターを指定している
当該 API のドキュメントから、指定したパラメーターや値が小文字・大文字含めて正しく指定されているか確認し、誤記がある場合は修正します。
また、Step Functions のドキュメントにサポートされている API やパラメーターが記載されていますので、そちらも忘れずに確認するといいですね。
AWS SDK の統合は以下ドキュメントに、
最適化された統合は、以下ドキュメントに記載されています。
Optimized integrations for Step Functions
ステートマシンの IAM ロールの権限が不十分
ステートマシンの作成が失敗した時間帯の CloudTrail イベント履歴を確認し、AccessDenied などのエラーが発生している API を特定できます。
なお、CloudTrail が記録をサポートしてしない API もありますので、ご注意ください。
特に、リクエストが完了するのを待ってから次の状態に進む .sync タスクがあるステートマシンを作成・更新する際に、IAM ロールの権限が不十分のためエラーが発生するパターンが見受けられます。
マネジメントコンソールからステートマシンを作成・更新する際、「新しいロールの作成」を選択すると適切な権限を持つ IAM ロールを自動的に作成してくれますが、「既存のロールを選択する」の場合は、IAM ロールに適切な権限を自動的に付与してくれません。
そのため、IAM ロールの権限不足が原因のエラーは、マネジメントコンソールからステートマシンを更新するときや、ステートマシンを CloudFormation で作成する際に遭遇することが多いかと思われます。
IAM ロールの権限が不十分のため発生するエラーの場合は、CloudTrail やステートマシンで定義しているステートの関連ドキュメントなどを確認し、必要な権限を追加してください。
参考資料
Invoke Lambda with Step Functions